var polyline;
var polylinesArray = [];
// 距离标记数组
var lenArray = [];

/*
 * *****************************************************************************/
// 测距执行和取消函数
/*
 * *****************************************************************************/
function ceJu() {
	var text1 = document.getElementById("ceJu").value;
	if (text1 == "测距") {
		document.getElementById("ceJu").value = "取消测距";
		getDistance();
	}
	if (text1 == "取消测距") {
		document.getElementById("ceJu").value = "测距";
		clearLis();
	}
}

/*
 * *****************************************************************************/
// 调用Android的java代码显示消息
/*
 * *****************************************************************************/
function showAndroidToast(toast) {
	Android.showToast(toast);
}

/*
 * *****************************************************************************/
// 创建标记
/*
 * *****************************************************************************/
function CreateMarker(lat, lng, MyGoToCommunityZoom) {
	var wuzhouCenter = new google.maps.LatLng(lat, lng);
	var myOptions = {
		zoom : MyGoToCommunityZoom,
		center : wuzhouCenter,
		navigationControl : true,
		scaleControl : true,
		streetViewControl : true,
		mapTypeId : google.maps.MapTypeId.ROADMAP
	}
	map.setOptions(myOptions);
}

/*
 * *****************************************************************************/
// 距离
/*
 * *****************************************************************************/
function getDistance() {
	google.maps.event.addListener(map, "click", function(event) {
		addMarker(event.latLng);
	});
}

/*
 * *****************************************************************************/
// 取消测距的点击事件
/*
 * *****************************************************************************/
function clearLis() {
	deleteOverlays();
	google.maps.event.clearListeners(map, "click");
}

/*
 * *****************************************************************************/
// 添加测距新标记
/*
 * *****************************************************************************/
function addMarker(location) {
	if (lenArray.length == 0) {
		// 添加测距开始标记图标
		var icon = "http://www.google.com/mapfiles/dd-start.png";
	} else {
		if (lenArray.length >= 2) {
			marker.setMap(null);
		}
		// 添加测距结束标记图标
		var icon = "http://labs.google.com/ridefinder/images/mm_20_green.png";
	}
	// 标记选项
	var myOptions = {
		position : location,
		draggable : true,
		map : map,
		icon : icon
	};
	marker = new google.maps.Marker(myOptions);
	// 双击
	google.maps.event.addListener(marker, 'click', function() {
		// 放入marker
		lenArray.push(marker);
		drawOverlay();
	});
	// 拖动结束事件
	google.maps.event.addListener(marker, 'dragend', function() {
		lenArray.push(marker);
		drawOverlay();
	});
	lenArray.push(marker);
	drawOverlay();
}

/*
 * *****************************************************************************/
// 画出路径覆盖层
/*
 * *****************************************************************************/
function drawOverlay() {
	// 路线数组
	var flightPlanCoordinates = [];
	//  
	// 将坐标压入路线数组
	if (lenArray) {
		for (i in lenArray) {
			flightPlanCoordinates.push(lenArray[i].getPosition());
		}
	}
	// 路径选项
	var myOptions = {
		path : flightPlanCoordinates,
		map : map,
		strokeColor : "#FF0000",
		strokeOpacity : 1.0,
		strokeWeight : 2
	};
	polyline = new google.maps.Polyline(myOptions);
	// 清除原有折线路径
	if (polylinesArray) {
		for (i in polylinesArray) {
			polylinesArray[i].setMap(null);
		}
		polylinesArray = [];
	}
	polyline.setMap(map);
	// document.getElementById("sRes").innerHTML = (polyline.getLength() / 1000)
	// .toFixed(3);

	polylinesArray.push(polyline);
	showAndroidToast((polyline.getLength() / 1000).toFixed(3) + "");
}

/*
 * *****************************************************************************/
// 距离算法
/*
 * *****************************************************************************/
google.maps.LatLng.prototype.distanceFrom = function(latlng) {
	var lat = [ this.lat(), latlng.lat() ]
	var lng = [ this.lng(), latlng.lng() ] // var R = 6371; // km (change this
	// constant to get miles)
	var R = 6378137; // In meters
	var dLat = (lat[1] - lat[0]) * Math.PI / 180;
	var dLng = (lng[1] - lng[0]) * Math.PI / 180;
	var a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
			+ Math.cos(lat[0] * Math.PI / 180)
			* Math.cos(lat[1] * Math.PI / 180) * Math.sin(dLng / 2)
			* Math.sin(dLng / 2);
	var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
	var d = R * c;
	return Math.round(d);
}

/*
 * *****************************************************************************/
/*
 * *****************************************************************************/
google.maps.Marker.prototype.distanceFrom = function(marker) {
	return this.getPosition().distanceFrom(marker.getPosition());
}

/*
 * *****************************************************************************/
// 折线的长度
/*
 * *****************************************************************************/
google.maps.Polyline.prototype.getLength = function() {
	var d = 0;
	var path = this.getPath();
	var latlng;
	for ( var i = 0; i < path.getLength() - 1; i++) {
		latlng = [ path.getAt(i), path.getAt(i + 1) ];
		d += latlng[0].distanceFrom(latlng[1]);
	}
	return d;
}

/*
 * *****************************************************************************/
// 删除所有叠加物
/*
 * *****************************************************************************/
function deleteOverlays() {
	if (lenArray) {
		for (i in lenArray) {
			lenArray[i].setMap(null);
		}
		lenArray.length = 0;
	}

	// 清除原有折线路径
	if (polylinesArray) {
		for (i in polylinesArray) {
			polylinesArray[i].setMap(null);
		}
		polylinesArray = [];
	}
}
